﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EGuayas.Web.Resources;
using EntGuayasSLA.BL.Listas;
using Ext.Net;
using EntGuayasSLA.BL;
using System.IO;
using System.Text;
using EntGuayasSLA.BL.Licenciamiento;
using EGuayas.Web.Usuario;
using EGuayas.Web.Licenciamiento.promotor.tabs;
using EntGuayasSLA.BL.Listas.Criterias;

namespace EGuayas.Web.Expedientes
{
    public partial class pgNuevoExpediente : ExpedienteIU
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!X.IsAjaxRequest)
                {
                  
                    ExpedienteIdTmp = "";
                    ExpedienteEstadoTmp = "";
                    ProvinciaLista provinciaList = ProvinciaLista.GetProvinciaLista();
                    stoProvincia.DataSource = provinciaList.Where(prov=> prov.Nombre.ToUpper()=="GUAYAS").ToList();
                    stoProvincia.DataBind();
                    //
                    this.frmDocumentos.Disable();
                    this.tabPanelExp.CloseTab(2, CloseAction.Hide);
                    //Asignar valor de la session evento
                    SetSessionPage setSession = new SetSessionPage(SessionPage.PageGestionExpLic,
                                                                    Valores.PageEvento_Nuevo);
                    this.dtfFecha.SetValue(DateTime.Now);
                    this.dtfFecha.ReadOnly = true;
                    //
                    Guid idPromotor = Guid.Parse(GetSessionUsuario.PersonaId);
                    Dynamic ValuesSetPromotor = GetDataPromotor(idPromotor);
                    //Setear datos de promotor
                    if (ValuesSetPromotor.Dictionary.Keys.Contains("IdPromotor"))
                    {
                        this.frmCard_0.SetValues(ValuesSetPromotor.Dictionary);
                    }
                    else
                    {
                        X.Msg.Show(new MessageBoxConfig()
                            {
                                Message = "Se requiere rol de usuario igual a <b>Promotor</b>",
                                Title = Titulos.TituloAviso,
                                Buttons = MessageBox.Button.OK,
                                Icon = MessageBox.Icon.INFO
                            });
                    }

               
                    //
                    var preguntas = CategoriaInformacionLista.GetCategoriaInformacionLista();
                    List<string> idPreguntas = new List<string>();
                    foreach (var pregunta in preguntas)
                    {
                        idPreguntas.Add("txtArea_" + pregunta.Codigo);

                    }
                    //Ocultar textbox de validacion
                    X.Js.Call("setHidenComentario", idPreguntas, GetSessionUsuario.UsuarioRolCodigo,"H");
                    
                    //
                    if (GetSessionUsuario.UsuarioRolCodigo!=Valores.Codigo_Rol_Promotor)                   
                    {
                            this.tabPanelExp.CloseTab(1, CloseAction.Hide);
                            
                    }
                    this.CheckButtonsNuevo();
                  
                    CodeFaseInicial = Constantes.LCategorizacion;
                } //if (!X.IsAjaxRequest)
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
         
        /// <summary>
        /// Grabar información de expediente
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSave_Click(object sender, DirectEventArgs e)
        {
            try
            {
              
                string msgEvento = "";
                Boolean ifAlerta = Convert.ToBoolean(e.ExtraParams["ifAlert"]);
                string codFaseInicial = this.SaveFicha(e, "NUEVO", ifAlerta);
                
                if (ifAlerta == true)
                {
                    msgEvento = "";
                }
                else
                {
                    msgEvento = string.Format("<b>{0}</b> {1}", "Datos de expediente completo", "Adjunte los documentos respectivos, para que el proceso de creación del expediente sea completo.");
                    this.btnSave.Disabled = true;
                    this.btnSiguiente.Disabled = true;
                    this.btnAtras.Disabled = true;                       
                
                }
                X.Js.Call("ShowMsgEnabledTab2", msgEvento, "NUEVO");
                //if (ifAlerta == false)
                //{
                CodeFaseInicial = codFaseInicial;
                //Session["CODIGO_FASE_CRE_EXP"] = codFaseInicial;
                beginWucLoadDoc(codFaseInicial);
                //}
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        /// <summary>
        /// Habilitar Wuc Load Documentos e inicializar session segun categoria
        /// </summary>
        /// <param name="codFaseInicial"></param>
        private void beginWucLoadDoc(string codFaseInicial)
        {
            wucLoadDoc objLoadDoc = (wucLoadDoc)this.uc_load_exp.UserControls[0];
            //Actualizar store de requistos del tab Habilitado
            //Aqui se obtiene el listado de fase de licenciamiento y obtengo la fase de categorizacion
            Session[SessionPage.PageGestionExpLic + "_estadoFase" + codFaseInicial] = Valores.Codigo_Estado_Fase_Inicial;
            objLoadDoc.WucInit(SessionPage.PageGestionExpLic,codFaseInicial);
            //Habilitar tab documentos
            this.frmDocumentos.Enable();
        }

        protected void OnLoadDocAdded(object sender, ComponentAddedEventArgs e)
        {
            try
            {
                Ext.Net.Panel panel = (Ext.Net.Panel)e.Control;
                SetCustomConfigWucLicAll(panel, SessionPage.PageGestionExpLic, CodeFaseInicial);
                /*if (Session["CODIGO_FASE_CRE_EXP"]==null)
                {
                    SetCustomConfigWucLicAll(panel, SessionPage.PageGestionExpLic, Constantes.LCategorizacion);
                }
                else
                {
                    SetCustomConfigWucLicAll(panel, SessionPage.PageGestionExpLic, Session["CODIGO_FASE_CRE_EXP"].ToString());
                }*/
                
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }

        }
       
        private void CheckButtonsNuevo()
        {
            try
            {
                int index = this.panContenedorDatosFicha.ActiveIndex;
                Boolean valDisabled = index == (this.panContenedorDatosFicha.Items.Count - 1);

                this.btnAtras.Disabled = index == 0;
                
                if (valDisabled == true)
                {
                    this.btnSave.Show();

                    this.btnSiguiente.Hide();
                }
                else
                {
                    this.btnSave.Hide();

                    this.btnSiguiente.Show();
                }
                    
                //Limpiar Icono de Error
                X.Js.Call("ClerValidInfo");

            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }

        }
        protected void cbbProvincia_Select(object sender, DirectEventArgs e)
        {
            try
            {
                var cantonList = CantonLista.GetCantonLista(e.ExtraParams["Id"]);
                var cantonesSinGuayaquil = cantonList.Where(cl => cl.Nombre.ToUpper() != "GUAYAQUIL").ToList();

                cbbCanton.Reset();
                cbbParroquia.Reset();
                stoParroquia.RemoveAll();
                stoCanton.DataSource = cantonesSinGuayaquil;
                stoCanton.DataBind();
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        protected void cbbCanton_Select(object sender, DirectEventArgs e)
        {
            try
            {
                var parroquiaList = ParroquiaLista.GetParroquiaLista(e.ExtraParams["Id"]);
                cbbParroquia.Reset();
                stoParroquia.DataSource = parroquiaList;
                stoParroquia.DataBind();
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        [DirectMethod(ShowMask = true)]        
        public void EnabledTab2()
        {
           
            try
            {
                string codFaseInicial = "";
                string msgEvento = "Adjunte los documentos respectivos, para que el proceso de creación del expediente sea completo.";
                /*if (this.cbxClasif.Value.ToString() == Constantes.FaseConfigTdr)
                {
                    codFaseInicial = Constantes.LTDR;
                }
                else
                {
                    codFaseInicial = Constantes.LCategorizacion;
                }
                X.Js.Call("ShowMsgEnabledTab2", msgEvento, "NUEVO");

                CodeFaseInicial=codFaseInicial;*/
                beginWucLoadDoc(CodeFaseInicial);
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
            

        }
        [DirectMethod(ShowMask = true)]
        public ListLocalidad GetCanton(string Id, string IdParroquia)
        {
            ListLocalidad valReturn = new ListLocalidad();
            try
            {

                valReturn.ListCanton = CantonLista.GetCantonLista(Id);
                valReturn.ListParroq = ParroquiaLista.GetParroquiaLista(IdParroquia);

                this.cbbCanton.Reset();
                this.cbbParroquia.Reset();
                this.stoParroquia.RemoveAll();


                this.cbbParroquia.Reset();
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
            return (valReturn);
        }

       
    }
}